<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>

<body>
  <div>
    <ul>
      <li>111</li>
      <li>222</li>
      <li>333</li>
    </ul>
  </div>
  <!-- // js 的函数也是对象 每个函数都有length和prototype
  //length 返回声明函数时 返回的参数个数 -->
  <script>
    function say(a, b, c) {
      // arguments  所有参数的集合 
      console.log(arguments);
      // 集合不能使用数组方法  有length属性 和下标
      console.log(arguments[5])
    }
    say.prototype = {}
    console.log(say.length) //形参的个数
    say(6, 7, 8, "sdf", "sdaf", { num: 1231 }, [12, 3])

    // 元素集合
    var lis = document.getElementsByTagName("li")
    console.log(lis)

    // 递归函数
    // 求5 的阶乘 1*2*3*4*5
    // 递归函数自己调用自己
    // 递归出口条件
    // 
    // function jcheng(n) {
    //   if (n == 1) {
    //     return 1
    //   } else {
    //     return n * jcheng(n - 1)
    //   }
    // }
    // jcheng(5) 


    function jcheng(n) {
      if (n == 1) {
        return 1
      } else {
        // arguments.callee  函数本身
        return n * arguments.callee(n - 1)
      }
    }
    jcheng(5)

    //  map 等类似函数中  函数没有名字
    // arr.map(function(ele,index)){
    //     arguments.callee()
    // })
  </script>
</body>

</html>